package com.atguigu.handler;

import com.atguigu.response.RetVal;
import org.springframework.web.bind.annotation.ControllerAdvice;
import org.springframework.web.bind.annotation.ExceptionHandler;
import org.springframework.web.bind.annotation.ResponseBody;

/**
 * @author ：HB
 * @date ：Created in 2020/11/2 12:24
 * @description：统一异常处理器 只要出现异常 就会交给这个类进行处理
 */
@ControllerAdvice
public class GlobalExceptionHandler {
    @ExceptionHandler(Exception.class)
    @ResponseBody
//    @ResponseBody这个注解一定要加上 否则会报404异常 因为你返回去的前端不认识 去找那个返回去的页面就报404异常了
//    @ResponseBody以json字符串的方式返回给前端
    public RetVal throwableHandler(Exception exception){
        exception.printStackTrace();
        System.out.println("全局异常生效了...");
        return RetVal.error().message("全局异常生效了...");
    }

    /**
     * 异常处理 优先匹配 精确度高的异常
     * @param exception
     * @return
     */
    @ExceptionHandler(ArithmeticException.class)
    @ResponseBody
    public RetVal throwableHandler(ArithmeticException exception){
        exception.getMessage();
        System.out.println("特殊异常生效了...");
        return RetVal.error().message("特殊异常生效了...");
    }
}
